package jnBase.components
{
	import laya.display.Sprite;
	import laya.events.Event;
	import laya.renders.Render;
	import laya.utils.Browser;
	import laya.utils.Utils;
	
	/**
	 * ... 视频控制工具类
	 * @author
	 */
	public class VideoTool{

		private var close:*;
		public function VideoTool()
		{
			
		}
        
		//视频对象
		public var video:Object;

		//播放视频
		// * 视频资源地址
		// * PC端x轴坐标，相对坐标
		// * PC端y轴坐标，相对坐标
		// * PC端宽度
		// * PC端高度
		// * 移动端x轴坐标，相对坐标
		// * 移动端y轴坐标，相对坐标
		// * 移动端宽度
		// * 移动端高度
		// * 'http://content.jwplatform.com/manifests/vM7nH0Kl.m3u8'
		public function VideoPlay(path:String,pc_x:Number,pc_y:Number,pc_Width:Number,pc_Height:Number,mobile_x:Number,mobile_y:Number,mobile_Width:Number,mobile_Height:Number):void
		{
            if(Browser.onPC)//PC端
			{
				PCPlay(path,pc_x,pc_y,pc_Width,pc_Height);
			}
			else if(Browser.onMobile)//移动端
			{
				MobilePlay(path,mobile_x,mobile_y,mobile_Width,mobile_Height);
				// Laya.stage.screenMode = "horizontal";
			}
		}

		//加载完毕是否播放
		public function Autoplay(bool:Boolean):void
		{
			video.autoplay = bool;
		}
		//开始播放视频
		public function Play():void
		{
			video.play();
			video.style.display="block"; 
		}
		//暂停视频
		public function Pause():void
		{
			video.pause(); 
		}
		public function destroy():void{
			video.pause();
			video.style.display="none"; 
		}
		//设置视频是否应该显示控件（比如播放/暂停/音量等）。
		public function Controls(bool:Boolean):void
		{
			video.controls = bool;
		}
		//返回视频中的当前播放位置（以秒计）。
		public function get CurrentTime():int
		{
			return video.currentTime;
		}
		//设置视频中的当前播放位置（以秒计）。
		public function set CurrentTime(time:int):void
		{
			video.currentTime = time;
		}
		//返回视频的播放是否已结束。
		public function get Ended():Boolean
		{
			return video.ended;
		}


		//移动端播放 m3u8视频
		// * 视频资源路径
		// * x轴坐标，相对坐标
		// * y轴坐标，相对坐标
		// * 宽度
		// * 高度
		private function MobilePlay(path:String,x:Number,y:Number,w:Number,h:Number):void
		{
			// 创建Video元素
			video = Browser.createElement("video");
			// 设置Video元素地样式和属性
			Browser.document.body.appendChild(video);
			video.style.zIndex = Render.canvas.style.zIndex + 1;
			//音量设置
			video.volume = 0.6;
			//获取视频
			video.src = path;
			video.controls = true;
			video.autoplay = true;
			// 设置画布上的对齐参照物
			var reference:Sprite = new Sprite();
			reference.pos(x, y);
			reference.size(w, h);
			Utils.fitDOMElementInArea(video,reference,0,0,reference.width,reference.height);
			// 每次舞台尺寸变更时，都会调用Utils.fitDOMElementInArea设置Video的位置，对齐的位置和refence重合
			Laya.stage.on(Event.RESIZE, this, Utils.fitDOMElementInArea, [video, reference, 0, 0, reference.width, reference.height]);
		}

		
		//PC端播放 m3u8视频
		// * 视频资源路径
		// * x轴坐标，相对坐标
		// * y轴坐标，相对坐标
		// * 宽度
		// * 高度
		//'http://content.jwplatform.com/manifests/vM7nH0Kl.m3u8'
		private function PCPlay(path:String,x:Number,y:Number,w:Number,h:Number):void
		{
			var Hls:Object = Browser.window.Hls;//获取对Hls的引用；
			video = Browser.createElement("video");
			video.controls = true;
			video.autoplay = true;
			video.volume = 0.6;//音量  最大 1
			// 设置Video元素地样式和属性
			if (Hls.isSupported()) 
			{
				var hls:Object = new Hls();
				hls.loadSource(path);//加载m3u8源
				hls.attachMedia(video);
				hls.on(Hls.Events.MANIFEST_PARSED,function():void
				{
					video.play();
				});
				var reference:Sprite = new Sprite();
				Laya.stage.addChild(reference);
				reference.pos(x, y);
				reference.size(w, h);
				// 设置Video元素地样式和属性
				Browser.document.body.appendChild(video);//添加父物体 与舞台交互时使用
				video.style.zIndex = Render.canvas.style.zIndex + 1;//调整层级 与舞台交互时使用
				Utils.fitDOMElementInArea(video,reference,0,0,reference.width,reference.height);
				// 每次舞台尺寸变更时，都会调用Utils.fitDOMElementInArea设置Video的位置，对齐的位置和refence重合
				Laya.stage.on(Event.RESIZE, this, Utils.fitDOMElementInArea, [video, reference, 0, 0, reference.width, reference.height]);
			}
			
		}
	}
}